/**
 *
 * @description:
 * @author: junyong.hong
 * @createTime: 2018/3/20
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
var path = require('path')
var ExtractTextWebpackPlugin = require('extract-text-webpack-plugin')

module.exports = {
    entry: {
        app: './src/app.js'
    },

    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].bundle.js',
        // chunk的名称
        chunkFilename: '[name].bundle.js'
    },

    module: {
        rules: [
            {
                test: /\.less$/,
                // 提取css方法
                use: ExtractTextWebpackPlugin.extract({
                    // 当不提取用什么方式加载到页面上（直接把样式插入到HTML页面上）
                    fallback: {
                        // 放到HTML页面上
                        loader: 'style-loader',
                        options: {
                            // 让样式结合到一个style标签上（图2）
                            singleton: true,
                            // css函数（图3、4）
                            transform: './css.transform.js'
                        }
                    },
                    // 继续处理的loader
                    use: [
                        {
                            // 把css交给css-loader，让他处理完js可以import css代码，再交给style-loader（相当于引用css文件）
                            loader: 'css-loader',
                            options: {
                                // css被压缩（图1）
                                // minimize: true,
                                // js代码中使用css样式（图2）
                                modules: true,
                                // 给class命名：路径 文件名 class名称 五位的编码（图3）
                                localIdentName: '[path][name]_[local]_[hash:base64:5]'
                            }
                        },
                        {
                            loader: 'less-loader'
                        }
                    ]
                })
            }
        ]
    },

    plugins: [
        // 对（提取css文件）插件的调用
        new ExtractTextWebpackPlugin({
            // 提取出来的css文件名称
            filename: '[name].min.css',
            // 指定提取范围（如果是true是就把所有有引入的css文件都打包；如果是false，只会提取初始化的文件）
            allChunks: false
        })
    ]
}